/**
 * 
 */
package co.edu.udea.iw.prestamodispositivos.dao;

import java.util.List;

import co.edu.udea.iw.prestamodispositivos.dto.Prestamo;
import co.edu.udea.iw.prestamodispositivos.excepciones.IWBLException;
import co.edu.udea.iw.prestamodispositivos.excepciones.IWDAOException;

/**
 * @author JuanF
 *interface donde se declaran los metodos para el manejo de prestamos
 */
public interface PrestamoDAO {
	 /**
     * usado para crear los prestamos
     * @param prestamo valor usado para generar el prestamo 
     * @throws IWBLException, IWDAOException clase usada para capturar las excepsiones
     */
    public void createPrestamo(Prestamo prestamo)throws IWBLException, IWDAOException;
    /**
     * Entrega el prestamos que se encuentra almacenado en el sistema
     * @param codigoPrestamo valor usado para obtener el prestamo
     * @return Retorna el prestamo con el valor enviado como parametro
     * @throws IWBLException, IWDAOException clase usada para capturar las excepsiones
     */
    public Prestamo getPrestamo(int codigoPrestamo)throws IWBLException, IWDAOException;
    /**
     * Entrega todos los prestamos que se encuentran almacenados en el sistema, sin importar
     * si esta eliminado o no
     * @return retorna todos los prestamos, mostrandolos en una lista 
     * @throws IWBLException, IWDAOException clase usada para capturar las excepsiones
     */
    public List<Prestamo> getAllPrestamos()throws IWBLException, IWDAOException;
    /**
     * Entrega todos los prestamos que se encuentran pendientes
     * @return Retorna todos los prestamos pendientes, mostrandolos en una lista
     * @throws IWBLException, IWDAOException clase usada para capturar las excepsiones
     */
    public List<Prestamo> getAllPendingPrestamos()throws IWBLException, IWDAOException;
    /**
     * Usado para acturalizar los prestamos que se encuentran alamacenados en el sistema.
     * @param prestamo valor del prestamo que se desea acturalizar 
     * @throws IWBLException, IWDAOException clase usada para capturar las excepsiones
     */
    public void updatePrestamo(Prestamo prestamo)throws IWBLException, IWDAOException;
    /**
     * Usado para borrar los prestamos que se encuentran almacenados en el sistema
     * @param codigoPrestamo valor del prestamo que se desea borrar.
     * @throws IWBLException, IWDAOException clase usada para capturar las excepsiones
     */
    public void deletePrestamo(int codigoPrestamo)throws IWBLException, IWDAOException;
    

}
